#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    int fd;
    char buffer[16];
    int ret = 0;
    /* 打开文件 */
    fd = open("./test_file", O_RDWR | O_APPEND);
    if (-1 == fd) {
        perror("open error");
        exit(-1);
    }
    /* 初始化 buffer 中的数据 */
    memset(buffer, 0x55, sizeof(buffer));
    /* 写入数据，写入4个字节的数据 */
    ret = write(fd, buffer, sizeof(buffer));
    if (-1 == ret) {
        perror("write error");
        goto err;
    }
    /* 将 buffer缓冲区中的数据全部清 0 */
    memset(buffer, 0x00, sizeof(buffer));
    /* 将位置偏移量移动至距离文件末尾4个字节处 */
    ret = lseek(fd, -4, SEEK_END);
    if (-1 == ret) {
        perror("lseek error");
        goto err;
    }
    /* 读取数据 */
    ret = read(fd, buffer, 4);
    if (-1 == ret) {
        perror("read error");
        goto err;
    }
    printf("0x%x 0x%x 0x%x 0x%x\n", buffer[0], buffer[1], buffer[2], buffer[3]);
    ret = 0;
err:
    /* 关闭文件 */
    close(fd);
    exit(0);
}